#include <algorithm>
#include <cctype> //ctype无法打开，包含tolower()函数和ispunct函数
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <string>
#include <utility> //保存pair的头文件
#include <vector>

using namespace std;

class A {
public:
  //默认构造函数，14题
  A() {
    static int val1 = 10;
    val = val1++;
  }
  //自定义版本的拷贝构造函数
  A(A &a) { val = a.val + 5; }
  int val;
};
void show2(A a) { cout << a.val << endl; }
void show3(const A &a) { cout << a.val << endl; }
int main(int argc, char **argv) {
  A a, b = a, c = b;
  show2(a); //调用函数时需要拷贝一次
  show2(b);
  show2(c);

  // 	show3(a);//这里的调用不需要拷贝构造运算符
  // 	show3(b);
  // 	show3(c);

  return 0;
}